package cn.tedu.charging.order.config;

import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@Slf4j
public class XxlJobConfig {
    @Value("${xxl.job.admin.addresses}")
    private String adminAddresses;

    // xxl-job访问令牌
    @Value("${xxl.job.accessToken}")
    private String accessToken;

    // xxl-job执行器应用名称
    @Value("${xxl.job.executor.appname}")
    private String appname;

    // xxl-job执行器地址 和ip和port关系 ip 127.0.0.1 port 19999 address 127.0.0.1:19999
    @Value("${xxl.job.executor.address}")
    private String address;

    // xxl-job执行器IP
    @Value("${xxl.job.executor.ip}")
    private String ip;

    // xxl-job执行器端口号
    @Value("${xxl.job.executor.port}")
    private int port;

    // xxl-job执行器日志路径
    @Value("${xxl.job.executor.logpath}")
    private String logPath;

    // xxl-job执行器日志保留天数
    @Value("${xxl.job.executor.logretentiondays}")
    private int logRetentionDays;
    @Bean
    public XxlJobSpringExecutor myExecutor(){
        XxlJobSpringExecutor executor = new XxlJobSpringExecutor();
        /**
         * executor需要连接 和localhost:8080/xxl-job-admin的通信 提供权限鉴定
         * 应该给对象提供必要的属性 address 连接调度中心平台地址
         * username password或者其他权限标识
         */
        executor.setAdminAddresses(adminAddresses);//调度中心通讯地址
        executor.setAccessToken(accessToken);//获取调度中心访问权限
        executor.setAppname(appname);//业务不同 服务不同 执行器名字不一样
        executor.setAddress(address);//执行器完整路径 null
        executor.setIp(ip);//默认读取一个当前进程运行所在服务器网卡ip
        executor.setPort(port);//调度中心 调度执行器的通信端口
        executor.setLogPath(logPath);//日志路径
        executor.setLogRetentionDays(logRetentionDays);//日志最大存储时间
        return executor;
    }
}
